/**
 * Created by GanJc on 2015/12/27.
 */
'use strict';

var fs = require('fs');

fs.readFile('sample.txt', 'utf-8', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        // String -> Buffer
        var buf = new Buffer(data, 'utf-8');
        console.log(buf);
    }
});

fs.readFile('sample.jpeg', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        console.log(data.length + ' bytes');
    }
});

fs.readFile('sample.txt', function (err, data) {
    if (err) {
        console.log(err);
    } else {
        console.log(data);
        // Buffer -> String
        var text = data.toString('utf-8');
        console.log(text);
    }
});

try {
    var data = fs.readFileSync('sample.txt', 'utf-8');
    console.log("同步读取:" +  data);
} catch (err) {
    console.log(err);
}


//写文件
//将数据写入文件是通过fs.writeFile()实现的：

var data = 'Hello, Node.js 啊啊啊啊';
fs.writeFile('output.txt', data, function (err) {
    if (err) {
        console.log(err);
    } else {
        console.log('写文件 ok.');
    }
});

//和readFile()类似，writeFile()也有一个同步方法，叫writeFileSync()：
var data = 'Hello, Node.js  同步写入';
fs.writeFileSync('output2.txt', data);

//stat
//如果我们要获取文件大小，创建时间等信息，可以使用fs.stat()，它返回一个Stat对象，能告诉我们文件或目录的详细信息：

var fs = require('fs');

fs.stat('sample.txt', function (err, stat) {
    if (err) {
        console.log(err);
    } else {
        // 是否是文件:
        console.log('isFile: ' + stat.isFile());
        // 是否是目录:
        console.log('isDirectory: ' + stat.isDirectory());
        if (stat.isFile()) {
            // 文件大小:
            console.log('size: ' + stat.size);
            // 创建时间, Date对象:
            console.log('birth time: ' + stat.birthtime);
            // 修改时间, Date对象:
            console.log('modified time: ' + stat.mtime);
        }
    }
});
